Computer operating systems use virtual memory techniques to permit multiple application programs to run concurrently and to address a contiguous working memory space, even when the corresponding physical (machine) memory space is fragmented and may overflow to disk storage. The virtual memory address space is typically divided into pages, and the computer memory management unit (MMU) uses page tables to translate the virtual addresses of the application program into physical addresses. The virtual address range may exceed the amount of actual physical memory, in which case disk files are used to save virtual memory pages that are not currently active.
I/O devices, such as network interface controllers (NICs), usually use physical memory addresses in order to access host memory, but some virtual memory addressing techniques for I/O have been described in the patent literature. For example, U.S. Patent Application Publication 2010/0274876, whose disclosure is incorporated herein by reference, describes an I/O device, which is configured to receive, over a network, data packets associated with I/O operations directed to specified virtual addresses in the memory. Packet processing hardware in the I/O device is configured to translate the virtual addresses into physical addresses and to perform the I/O operations using the physical addresses. Upon an occurrence of a page fault in translating one of the virtual addresses, the hardware transmits a response packet over the network to a source of the data packets so as to cause the source to refrain from transmitting further data packets while the page fault is serviced.
As another example, U.S. Patent Application Publication 2004/0221128 describes virtual-to-physical memory mapping in network interfaces. Each network interface includes a memory management unit with at least one mapping table for mapping virtual addresses to the physical addresses of the addressable memory of the respective processing node. U.S. Pat. No. 7,299,266 describes memory management offload for RDMA (remote direct memory access) enabled network adapters. A mechanism is provided for implicitly or explicitly registering memory regions, and the hardware is allowed to directly use a region through memory region tables and address translation tables while keeping the region isolated from use by other applications.
InfiniBand™ (IB) is a switched-fabric communications link primarily used in high-performance computing. It has been standardized by the InfiniBand Trade Association. Computing devices (host processors and peripherals) connect to the IB fabric via a network interface controller, which is referred to in IB parlance as a channel adapter. Host processors (or hosts) use a host channel adapter (HCA), while peripheral devices use a target channel adapter (TCA). IB channel adapters implement various service types and transport protocols, including RDMA read and write operations. Details of a hardware-based implementation of IB RDMA are provided, for example, in U.S. Patent Application Publication 2002/0152327, whose disclosure is incorporated herein by reference.